Text Data Preprocessing হল একটি গুরুত্বপূর্ণ প্রক্রিয়া যা মেশিন লার্নিং বা ডীপ লার্নিং মডেল প্রশিক্ষণের আগে টেক্সট ডেটাকে উপযুক্ত ফর্ম্যাটে রূপান্তরিত করতে ব্যবহৃত হয়। এর মধ্যে টেক্সট ক্লিনিং, tokenization, padding, এবং embedding সহ অন্যান্য ধাপ অন্তর্ভুক্ত থাকে। চলুন, এই ধাপগুলির বিস্তারিত আলোচনা করি।
Tokenization হল একটি প্রক্রিয়া, যেখানে একটি বড় টেক্সট স্ট্রিংকে ছোট ছোট ইউনিট (যেমন শব্দ বা অক্ষর) বা tokens-এ ভাগ করা হয়। এটি মডেলের জন্য টেক্সট ডেটাকে যথাযথভাবে বিশ্লেষণ করা এবং এর উপাদানগুলোকে সনাক্ত করা সহজ করে।
Tokenization উদাহরণ:
from tensorflow.keras.preprocessing.text import Tokenizer
# উদাহরণ টেক্সট
texts = ["I love machine learning", "Machine learning is amazing"]
# Tokenizer তৈরি করা
tokenizer = Tokenizer()
tokenizer.fit_on_texts(texts)
# টোকেনাইজড শব্দগুলি দেখা
sequences = tokenizer.texts_to_sequences(texts)
print(sequences)
Output:
[[1, 2, 3, 4], [3, 4, 5, 6]]
এখানে, শব্দগুলি ইন্টিজারে রূপান্তরিত হয়েছে (যেমন, "I" → 1, "love" → 2, "machine" → 3, ইত্যাদি)। texts_to_sequences()
মেথডের মাধ্যমে টেক্সটকে সিকোয়েন্স আকারে রূপান্তরিত করা হয়েছে।
Padding হল একটি প্রক্রিয়া যেখানে টোকেনাইজড সিকোয়েন্সের দৈর্ঘ্য সমান করার জন্য এক বা একাধিক প্যাডিং যুক্ত করা হয়। বেশিরভাগ মেশিন লার্নিং মডেল সমান দৈর্ঘ্যের ইনপুট ডেটা চায়, তাই এই ধাপটি খুবই গুরুত্বপূর্ণ। pad_sequences()
ফাংশনটি ব্যবহার করে আমরা সিকোয়েন্সের দৈর্ঘ্য সমান করতে পারি।
from tensorflow.keras.preprocessing.sequence import pad_sequences
# Padding করার আগে সিকোয়েন্স
sequences = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
# Padding
padded_sequences = pad_sequences(sequences, padding='post')
print(padded_sequences)
Output:
[[1 2 3 0]
[4 5 0 0]
[6 7 8 9]]
এখানে, padding='post'
ব্যবহার করা হয়েছে, যার মানে হল যে, প্যাডিং সিকোয়েন্সের শেষে যোগ হবে। এছাড়া, আপনি padding='pre'
ব্যবহার করে প্যাডিং সিকোয়েন্সের শুরুতে যোগ করতে পারেন।
Embedding হল একটি টেকনিক যা একটি শব্দ বা টোকেনকে একটি সুনির্দিষ্ট ডেনস ভেক্টরে রূপান্তরিত করে। এটি শব্দের গাণিতিক উপস্থাপনা, যা শব্দের মধ্যে সম্পর্ককে ধরতে সাহায্য করে। Keras এ Embedding
লেয়ার ব্যবহার করা যায় যা অটোমেটিকভাবে টোকেন ভেক্টর তৈরি করে এবং মডেল প্রশিক্ষণের সময় এটি শিখে নেয়।
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, Flatten, Dense
# মডেল তৈরি করা
model = Sequential()
# Embedding layer (input_dim: vocabulary size, output_dim: embedding dimensions)
model.add(Embedding(input_dim=10, output_dim=8, input_length=4))
# Flattening এবং fully connected layer যোগ করা
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.summary()
Explanation:
Embedding
লেয়ার শব্দকে একটি গাণিতিক ভেক্টরে রূপান্তরিত করবে, যা মডেলটি শিখে নিতে সক্ষম। এখানে মডেলটি শুধুমাত্র একটি সিকোয়েন্সে 4 টোকেন নিয়ে কাজ করবে এবং প্রতিটি টোকেনের জন্য 8 ডাইমেনশনাল embedding তৈরি করবে।
এখানে একটি পূর্ণাঙ্গ উদাহরণ দেওয়া হলো, যাতে আমরা টোকেনাইজেশন, প্যাডিং এবং এমবেডিং একত্রে ব্যবহার করে একটি টেক্সট ডেটাসেট প্রিপ্রসেস করি।
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, Flatten, Dense
# উদাহরণ টেক্সট ডেটা
texts = ["I love machine learning", "Deep learning is fun", "Machine learning is great"]
# Tokenizer তৈরি করা
tokenizer = Tokenizer()
tokenizer.fit_on_texts(texts)
# টোকেনাইজড সিকোয়েন্স
sequences = tokenizer.texts_to_sequences(texts)
# Padding করা
padded_sequences = pad_sequences(sequences, padding='post')
# মডেল তৈরি করা
model = Sequential()
model.add(Embedding(input_dim=10, output_dim=8, input_length=padded_sequences.shape[1]))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
# মডেল সারাংশ
model.summary()
# মডেল প্রশিক্ষণ (এই উদাহরণে আমরা টার্গেট ডেটা দেব না)
# model.fit(padded_sequences, target_data, epochs=10)
এই প্রক্রিয়াগুলি মেশিন লার্নিং মডেল প্রশিক্ষণের জন্য টেক্সট ডেটা প্রিপ্রসেসিংয়ের গুরুত্বপূর্ণ অংশ।
Read more